/*
 * Vista de botones excluyentes y reacciona a los cambios del modelo.
 */
package sudoku.Vista;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Observable;
import java.util.Observer;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import sudoku.Controlador.SudokuControlador;

/**
 *
 * @author User
 */
public class PanelBotones extends JPanel implements Observer {  
    ButtonGroup bgNumeros;          // Para agrupar los botones.
    JToggleButton[] btnNumeros;     
    
    /**
     * Constructor del panel.
     */
    public PanelBotones(){
        super(new BorderLayout());

        JPanel pnlNumeros = new JPanel();
        pnlNumeros.setLayout(new BoxLayout(pnlNumeros, BoxLayout.PAGE_AXIS));
        pnlNumeros.setBorder(BorderFactory.createTitledBorder(" Numeros "));
        add(pnlNumeros);

        JPanel pnlNumerosNumeros = new JPanel(new GridLayout(1,9));
        pnlNumeros.add(pnlNumerosNumeros);
        bgNumeros = new ButtonGroup();
        btnNumeros = new JToggleButton[10];
        for (int i = 0; i < 9; i++) {           
            btnNumeros[i] = new JToggleButton("" + (i+1));                    
            btnNumeros[i].setPreferredSize(new Dimension(40, 40));
            btnNumeros[i].setFocusable(false);
            bgNumeros.add(btnNumeros[i]);
            pnlNumerosNumeros.add(btnNumeros[i]);
        }
        
    }
    
    
    /**
     * Metodo llamado cuando el modelo envia notificaciones de actualizacion.
     *
     * @param o     El modelo.
     * @param arg   La accion.
     */
    public void update(Observable o, Object arg) {
        switch ((String)arg) {
            case "Solucionar":
                setEnabled(false);
                break;
            case "Nuevo":
                                setEnabled(true);
            case "Chequear":
                bgNumeros.clearSelection();
                break;
        }
    }

    
    /**
     * 
     * Agrega elcontrol a todos los componentes.
     *
     * @param botonControlador  Controlador para controlar las acciones de usuario.
     */
    public void setController(SudokuControlador botonControlador) {
        for (int i = 0; i < 9; i++)
            btnNumeros[i].addActionListener(botonControlador);
    }
    
    public void setEnabled(boolean bool ) {
        for (int i = 0; i < 9; i++){
            btnNumeros[i].setEnabled(bool);
        }
    }
}
